#include "app_common.h"
#include <sys/time.h>
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

long app_common_getCurrentTime(void)
{
    struct timeval tv;
    // 获取当前时间
    gettimeofday(&tv, NULL);

    return tv.tv_sec*1000 + tv.tv_usec/1000;
    // tv_sec为秒，tv_usec为微秒
}


// [a b]  =>"6162"   sprintf
char *app_common_charsToHexstr(char *chars, int len)
{
    // 申请内存
    char *hexstr = (char *)malloc(len*2 + 1);
    // 遍历chars中的每个字符，将其转换为2位16进制字符，并保存到hexstr中
    for (int i = 0; i < len; i++) {
        sprintf(hexstr+2*i, "%02x", chars[i]);
    }
    // 添加字符串结束符
    hexstr[len*2] = '\0';

    return hexstr;
}


// "6162" =》[a b]  sscanf
char *app_common_hexstrToChars(char *hexstr, int *p_chars_len)
{
    int hexstr_len = strlen(hexstr);
    
    // 保存字符数组的长度
    *p_chars_len = hexstr_len/2;

    // 申请内存
    char *chars = malloc(*p_chars_len);

    // 遍历hexstr中的每个字符(以2个为单位)，得到对应的字符，并保存到chars中
    for(int i=0; i<hexstr_len; i+=2) {
        sscanf(hexstr+i, "%2x", (unsigned int *)(chars+i/2));
    }

    return chars;
}
